package com.student.dao;

import com.student.bean.Student;

import java.sql.Connection;
import java.util.List;

/**
 * 此接口用于规范针对于student表的常用操作
 */

public interface StudentDAO {

    /**
     * @author wk
     * @Description 将 student 对象添加到数据库中
     * @Date 21:12 2022/3/2
     * @Param
     * @Return
     */

     int insert(Connection connection, Student student);

    /**
     * @author wk
     * @Description 根据学生的学号，删除学生信息
     * @Date 22:01 2022/3/2
     * @Param
     * @Return
     */

     int delete(Connection connection, String studentId);

    /**
     * @author wk
     * @Description 根据学号和字段修改指定学生的指定字段信息
     * @Date 10:22 2022/3/3
     * @Param
     * @Return
     */

     int update(Connection connection, String studentId, String key, Object value);

    /**
     * @author wk
     * @Description 针对内存中的 Student 对象，去修改数据库中指定的学生的全部数据
     * @Date 22:03 2022/3/2
     * @Param
     * @Return
     */

     int updateAll(Connection connection, String oldStudentId, Student student);

    /**
     *
     * 通过账号id，检查学生是否存在
     *
     * @param connection 连接
     * @param studentId    学生id
     * @return boolean
     */
    boolean checkStudentIsExistById(Connection connection,String studentId);

    /**
     * 通过身份证号，检查学生是否存在
     *
     * @param connection 连接
     * @param card       身份证号
     * @return boolean
     */
    boolean checkStudentIsExistByCard(Connection connection,String card);

    /**
     * 通过手机号，检查学生是否存在
     *
     * @param connection 连接
     * @param phone      电话
     * @return boolean
     */
    boolean checkStudentIsExistByPhone(Connection connection,String phone);


    /**
     * @author wk
     * @Description 根据学生学号，查询学生信息
     * @Date 22:04 2022/3/2
     * @Param
     * @Return
     */

     Student getStudentByStudentId(Connection connection, String studentId);

    /**
     * @author wk
     * @Description 根据手机号查询学生信息
     * @Date 20:57 2022/3/3
     * @Param
     * @Return
     */

     Student getStudentByPhone(Connection connection, String phone);

    /**
     * @author wk
     * @Description 根据身份证号查询学生信息
     * @Date 20:58 2022/3/3
     * @Param
     * @Return
     */

     Student getStudentByCard(Connection connection, String card);


    /**
     * @author wk
     * @Description 查询表中所有记录构成的集合
     * @Date 22:05 2022/3/2
     * @Param
     * @Return
     */

     List<Student> getStudentAll(Connection connection);


    /**
     * @author wk
     * @Description 查询数据库中 Student 数据总数目
     * @Date 22:06 2022/3/2
     * @Param
     * @Return
     */

     Long getCount(Connection connection);

    /**
     * @author wk
     * @Description 清空所有学生信息
     * @Date 20:06 2022/3/4
     * @Param
     * @Return
     */

     int clearAll(Connection connection);

}
